package service

import (
	"context"
	"fmt"
	"log/slog"
	"runtime"
	"time"

	"gitee.com/jiebaiyou/formflow/model"
)

// systemService 系统信息服务实现
type systemService struct {
	contextTimeout time.Duration
}

// NewSystemService 创建系统信息服务
func NewSystemService(timeout time.Duration) model.SystemService {
	return &systemService{
		contextTimeout: timeout,
	}
}

// GetSystemInfo 获取系统信息
func (s *systemService) GetSystemInfo(c context.Context) (*model.SystemInfo, error) {
	var memStats runtime.MemStats
	runtime.ReadMemStats(&memStats)

	// 将内存使用量从字节转换为MB
	memoryInMB := memStats.Alloc / (1024 * 1024)

	info := &model.SystemInfo{
		ProjectName: "formflow",
		MemoryUsage: fmt.Sprintf("%d MB", memoryInMB), // 内存使用量带单位
		Goroutines:  runtime.NumGoroutine(),
		ServerTime:  time.Now().Format("2006-01-02 15:04:05"), // 使用更易读的时间格式
	}

	slog.Info("获取系统信息", slog.Any("info", info))
	return info, nil
}

// GetHealth 获取系统健康状态
func (s *systemService) GetHealth(c context.Context) bool {
	return true
}
